#encoding:utf-8

'''
python第一周作业第二题
统计一个目录的大小
采用递归方式进行统计
'''
#导入os模块
import os

# 定义一个目录的路径，主要测试windows下的目录
_dirName = './total'
# 定义一个空的全局列表变量，以便于在函数中进行使用
_dirsize = []
def getDirSize(dirname):
    #使用global关键字声明列表变量
    global _dirsize
    #获取目录下的文件列表
    _dirList = os.listdir(dirname)
    #定义一个和的整形变量，初始的值为0，在循环中进行求和时使用
    _sum = 0
    #定义一个文件和列表，方便循环中进行列表操作
    _dirsum = []
    #遍历获取到目录下的文件列表
    for i in _dirList:
        #拼接完整的文件地址
        file1 = os.path.join(dirname, i)
        #如果为文件，则执行获取文件详细信息，将大小进行累加
        if os.path.isfile(file1):
            file_info = os.stat(file1)
            _sum += file_info.st_size
        #如果为目录，则条用自身实现递归统计
        if os.path.isdir(file1):
            getDirSize(file1)
    #如果文件大小大于0的话 将文件大小的值压入到文件和的列表中
    if _sum > 0:
        _dirsum.append(_sum)
    #将文件大小列表中一次性加入多个和列表
    _dirsize.extend(_dirsum)
    #删除和列表
    del(_dirsum)
    _count = 0
    for x in _dirsize:
        _count += x
    #返回总大小
    return _count
#调用方法，将方法赋给变量a
a = getDirSize(_dirName)
#输出结果
print(a)